// createStore 创建store实例化对象
import { createStore } from 'vuex'
import category from './modules/category' // 导入分类模块
import user from './modules/user' // 导入用户模块
import cart from './modules/cart' // 导入购物车模块
import * as Cookies from 'js-cookie' // 转存cookie
import createPersistedstate from 'vuex-persistedstate' // 导入插件

// 创建vuex实例化对象并导出
export default createStore({
  modules: {
    user,
    cart,
    category
  },
  plugins: [ // 插件配置
    createPersistedstate({
      key: 'erabbit-client-pc-store', // 这个key 会作为表示用来存入本地使用
      paths: ['user', 'cart'] // 需要把那哪个模块进行持久缓存就把模块名写进去（具体模块的的某个值 => 例user.id），内部所有数据都会进行持久化处理
    }),
    createPersistedstate({ // 转存到cookie
      key: 'erabbit-client-pc-store',
      paths: ['user', 'cart'],
      storage: {
        getItem: (key) => {
          return Cookies.get(key)
        },
        setItem: (key, value) =>
          Cookies.set(key, value, { expires: 365, secure: false }),
        removeItem: key => Cookies.remove(key)
      }
    })
  ]
})
